//
//  ModuleViewController.h
//  CocoaSynth
//
//  Created by Thomas Dupont on 19/02/10.
//  Copyright 2010 Apple Inc. All rights reserved.
//

#import <Cocoa/Cocoa.h>

@protocol ParametersModule;

@class Module;
@class MixingViewController;
@class PortInViewController;
@class PortOutViewController;
@class PortViewController;

@interface ModuleViewController : NSViewController {
	Module* model;
	MixingViewController* mixingController;
	NSString* name;
	NSMutableSet* portsIn;
	NSMutableSet* portsOut;
}

@property (retain) Module* model;
@property (retain) NSString* name;
@property (readonly) NSMutableSet* portsIn;
@property (readonly) NSMutableSet* portsOut;

- (void)setMixingController:(MixingViewController*)theController;
- (void)selectPortIn:(PortInViewController*)aPort;
- (void)selectPortOut:(PortOutViewController*)aPort;
- (void)unselectPorts;
- (void)disconnectPort:(PortViewController*)aPort;
- (void)refresh;
- (void)displayParameterView;
- (NSViewController<ParametersModule>*)parameters;
- (void)bringModuleToFront;
- (void)deleteModule;
- (void)highlight;
- (void)unhighlight;

@end
